package outoforder.leetcode;

import org.junit.Test;


/**
 *  颠倒给定的 32 位无符号整数的二进制位。
 *  输入: 00000010100101000001111010011100
 *  输出: 00111001011110000010100101000000
 *  解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596，
 *  因此返回 964176192，其二进制表示形式为 00111001011110000010100101000000。
 * @author shhjiang_001
 * @create 2020-03-09 13:55
 */
public class Solution190 {
    // you need treat n as an unsigned value
    public int reverseBits(int n) {
        int ans = 0;
        for (int i = 0;i <  32; i++){
            ans = ans + ((1&(n>>i))<<(31-i));
        }
        return ans;

    }
    @Test
    public void test(){
        Solution190 solution190 = new Solution190();
        int i = solution190.reverseBits(43261596);
        System.out.println(i);
    }
}
